<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>flash-embed &lsaquo; KISSY Docs</title>
<link rel="stylesheet" href="../assets/base-min.css" />
<link rel="stylesheet" href="../assets/docs.css" />
</head>
<body class="w866">
<div id="header">
    <a class="logo" href="../index.html"><img src="../assets/logo.png" alt="KISSY" width="138" height="74" /></a>
    <p class="rel-nav">
        <a href="http://github.com/kissyteam/kissy/blob/master/src/flash/flash-embed.js"><code>flash-embed.js</code></a>
    </p>
</div>
<div id="content" class="layout grid-s232m0">
    <div class="col-main">
        <div class="main-wrap">
            <div class="section summary">
                <p>flash-embed 模块为 SWF 提供了注册和动态嵌入等实用方法。</p>
				<dl>
					<dt>Editors:</dt>
					<dd><a href="mailto:longzang@taobao.com">龙藏</a>,Taobao,Inc</p></dd>
					<dd><a href="mailto:wangzhuo@use.com.cn">王卓</a>,Taobao,Inc</p></dd>
				</dl>
            </div>
            <div class="section">
                <h3 id="properties">Methods</h3>
                <div class="member method">
                    <h4>
                        <a name="method_add">add</a>
                        <code>void add( target, config, callback )</code>
                    </h4>
					<div class="detail">
                        <p>通过指定SWF 容器 的 HTML 元素或 HTML 元素 ID。</p>
                        <p>对于是否添加成功，需要依靠 callback 注册回调方法进行获取。</p>
                       <dl class="parameters">
                            <dt>Parameters:</dt>
                            <dd>
                                <code class="param-name">target</code>
                                <code class="param-type">&lt;String&gt;|&lt;HTMLElement&gt;</code>
                               	指定的HTML元素或HTML元素ID。（如果不存在 则自行创建 一个 div容器 。<b> KISSY.Flash.version 版本要 大于 1.2</b>）
								必选，
								这里添加主要是将对象加入KISSY进行统一管理。
                            </dd>
							<dd>
                                <code class="param-name">config</code>
                                <code class="param-type">&lt;Object&gt;</code>
                               	指定Flash的一些配置信息。
								可选，
								如标签属性、播放器参数以及其他诸如在线安装、SWF引用地址等等。
								见下文的《config 允许配置关键字》
                            </dd>
							<dd>
                                <code class="param-name">callback</code>
                                <code class="param-type">&lt;Function&gt;</code>
                               	回调函数。
								可选。
								返回添加的状态、id以及对应的SWF的HTML元素对象。
                            </dd>
                        </dl>
                         <p class="notice">由于依赖于DOM，请确保 在中使用KISSY.ready()。</p>
						 <p>config 配置示例：</p>
						 <pre class="example-code"><code>
var conifg = {
            src: 'test.swf',       // swf 路径  [唯一必选]
            id:'myswfid'          //swf id  如果没有定义 会自行创建
            params: { flashvars:{a:123,b,"yes"} }, // Flash Player 的配置参数
            attrs: {         // swf 对应 DOM 元素的属性
                width: 215,	// 最小控制面板宽度,小于此数字将无法支持在线快速安装
                height: 138  // 最小控制面板高度,小于此数字将无法支持在线快速安装
            },
            xi: 'expressInstall.swf',  // 快速安装地址。全称 express install 
            version: 10.1       // 要求的 Flash Player 最低版本
        };
</code>
</pre>
 <p class="tips"><a href="practice/references/flashplayer-parameters.html">了解更多Flash播放器参数</a></p>
	 					<p>带 callback 的 返回示例：</p>
						 <pre class="example-code"><code>
 Flash.add('#myFlashContent2', { version: '9' }, function(data) {
            alert("My id:" + data.id);
            alert("My status:" + data.status);
            alert("My html element:" + data.swf);
            alert("is dynamic publish:" + data.dynamic);
            
        });
</code></pre>

						
						<p>关于flashvars的处理：</p>
						<p>flashvars 可以理解成为 向swf传参，是flash 页面播放器的一个参数，可以这样被组织：</p>
 <pre class="example-code"><code>
< object  type="application/x-shockwave-flash"  data="PATH2SWF.swf" 
 width="800" height="600" >
	< param name="movie" value=" PATH2SWF.swf " / >	
	< param name="flashvars" value="a=1&b=2"  />
	< a href="go/getflashplayer" >
	    < img src="get_flash_player.gif" alt="Get Adobe Flash player" />
	< /a>	
< /object>
</code></pre>
					<p>事实上就是类似这样的解释：</p>
<pre class="example-code"><code>
PATH2SWF.swf?a=1&b=2
</code></pre>		
					<p>这样传参的好处则可以避免了URL的长度限制，其本身可以承受最大<b>64KB</b>容量的数据</p>				
					<p>意味着可以传递大规模的数据，为了解决 <i>“较少的参数传递更多更复杂数据”</i>。因此KISSY.Flash支持复杂的flashvars传递。</p>				
					<p>同时，复杂数据意味着“杂质”，因此 KISSY.Flash 将自行将参数值进行encodeURIComponent处理 。</p>				
					<p>因此，凡flashvars深度大于1的，都将会把数据转换为JSON数据给SWF。</p>	
					<p>示例：</p>	
<pre class="example-code"><code>					
F.add('#test-flash3', {
            src: 'assets/test.swf',
            version: 9,
            attrs: {
                width: 200,
                height: 150
            },
            params: {
                flashvars: {
                    s: "string",
                    b: false,
                    n: 1,
                    nul: null,
                    und: undefined,
                    url: "http://taobao.com/?x=1&z=2",
                    o: {
                        s: "string",
                        b: false,
                        n: 1,
                        url: "http://taobao.com/?x=1&z=2"
                    }
                }
            }
        }, function(data) {
            if (data.status !== 1) test.fail();
        });
		// 见此页最后的完整测试页面示例
</code></pre>	
								
                    </div>
                </div>
                <div class="member method">
                    <h4>
                        <a name="method_remove">remove</a>
                        <code>void remove ( id )</code>
                    </h4>
					<div class="detail">
						<p>通过指定的ID,移除已注册到 KISSY.Flash 的 SWF 和 DOM 中对应的 HTML 元素。</p>
						
						<dl class="parameters">
                            <dt>Parameters:</dt>
                            <dd>
                                <code class="param-name">id</code>
                                <code class="param-type">&lt;String&gt;</code>
                               	在 KISSY.Flash 中注册的ID。
								必选，
                            </dd>
                        </dl>
						
						 <p class="tips">对于已存在DOM中,但未向 KISSY.Flash注册的,则不会被移除。</p>
					</div>
					
                </div>
                <div class="member method">
                    <h4>
                        <a name="method_get">get</a>
                        <code>HTMLElement get ( id )</code>
                    </h4>
					<div class="detail">
						<p>获得已注册到 KISSY.Flash 的 SWF。</p>
						
						<dl class="parameters">
                            <dt>Parameters:</dt>
                            <dd>
                                <code class="param-name">id</code>
                                <code class="param-type">&lt;String&gt;</code>
                               	在 KISSY.Flash 中注册的ID。
								必选，
                            </dd>
                        </dl>
						
						 <dl class="return">
                            <dt>Returns: <code>HTMLElement</code></dt>
                            <dd>返回 SWF 的 HTML 元素，可能是(&lt;object&gt;或&lt;embed&gt;). 未注册时，返回 undefined</dd>
                        </dl>
						
						 <p class="tips">注意，请不要混淆 <a href="../dom/selector.html#method_get"> DOM.get()</a> 和 Flash.get()。</p>
						 <p class="tips">对于未向 KISSY.Flash注册的SWF，请使用 <a href="../dom/selector.html#method_get"> DOM.get()</a>方法。</p>
						 <p class="tips">只有成功执行过 KISSY.Flash.add() 的 SWF 才可以被获取。</p>
					</div>
                </div>
                <div class="member method">
                    <h4>
                        <a name="method_contains">contains</a>
                        <code>Boolean contains ( target )</code>
                    </h4>
					<div class="detail">
						<p>检测是否存在已注册的 swf。</p>
						
						<dl class="parameters">
                            <dt>Parameters:</dt>
                            <dd>
                                <code class="param-name">id</code>
                                <code class="param-type">&lt;String&gt;</code>
                               	在 KISSY.Flash 中注册的ID。
								必选，
                            </dd>
                        </dl>
						
						 <dl class="return">
                            <dt>Returns: <code>Boolean</code></dt>
                            <dd>只有有成功执行过 S.Flash.add() 的 SWF 返回 true，其他返回 false</dd>
                        </dl>
						
					</div>
                </div>
				
            </div>
            <div class="section notes">
                <p>
                    这文档要写细还真难。不过呢，我相信你很容易就知道怎么使用了，来看看这个测试页面：<a href="../../src/flash/test.html">flash/test.html</a>
                </p>
            </div>
        </div>
    </div>
    <div class="col-sub">
        <div class="sub-wrap">
            <div class="loc">
                <a href="../index.html">home</a> &rsaquo;
                <a href="index.html">flash</a> &rsaquo; flash-embed:
            </div>
            <div class="toc">
                <h3>Methods</h3>
                <ul>
                    <li><a href="#method_add">add</a></li>
                    <li><a href="#method_remove">remove</a></li>
                    <li><a href="#method_get">get</a></li>
                    <li><a href="#method_contains">contains</a></li>
                </ul>
            </div>
        </div>
    </div>
</div>
<div id="footer">
    <p class="copyright">&copy; 2009 - 2029 KISSY UI LIBRARY</p>
</div>
</body>
</html>
